#include <memory>

#include <gtest/gtest.h>

#include <Model/FibonacciNumberCalculator.hpp>


using namespace testing;


namespace Fibonacci
{
namespace Model
{
namespace Testing
{


class FibonacciNumberCalculatorTester : public Test
{
public:
  FibonacciNumberCalculatorTester()
  {
    calculator.reset(new FibonacciNumberCalculator());
  }

protected:
  std::unique_ptr<FibonacciNumberCalculator> calculator;
};


TEST_F(FibonacciNumberCalculatorTester, getsFibonacciNumbers)
{
  EXPECT_EQ(0u, calculator->get(0));
  EXPECT_EQ(1u, calculator->get(1));
  EXPECT_EQ(1u, calculator->get(2));
  EXPECT_EQ(2u, calculator->get(3));
  EXPECT_EQ(3u, calculator->get(4));
  EXPECT_EQ(5u, calculator->get(5));
  EXPECT_EQ(8u, calculator->get(6));
}


} // namespace Testing
} // namespace Model
} // namespace Fibonacci
